package com.xa.xamall.framework.mapper.custom;

import com.xa.xamall.framework.model.Params;

import java.util.List;
import java.util.Map;

/**
 * 动态拼接SQL接口
 * @param <T>
 */
public interface DynamicMapper<T> {

    /**
     * 添加实体数据
     * @param params 添加参数类
     * @return
     */
    int addEntity(Params params);

    /**
     * 执行增删改sql语句
     * @param sql sql语句
     * @return
     */
    long executeAction(String sql);

    /**
     * 批量添加
     * @param params 添加参数
     * @return
     */
    int batchAdd(Params params);

    /**
     * 批量删除
     * @param params 参数类
     * @return
     */
    int batchDelete(Params params);

    /**
     * 根据sql语句查询单个值
     * @param sql sql语句
     * @return
     */
    Object findOneValue(String sql);

    /**
     * 根据sql语句查询单条数据
     * @param sql sql语句
     * @return
     */
    Map<String, Object> findOneData(String sql);

    /**
     * 根据sql语句查询多条数据
     * @param sql sql语句
     * @return
     */
    List<Map<String, Object>> findManyData(String sql);

    /**
     * 根据sql语句统计数量
     * @param sql sql语句
     * @return
     */
    long findCount(String sql);

}
